home *** CD-ROM | disk | FTP | other *** search
/ PC Elektro 3 / PC-Elektro-3-cd1.bin / KBan 2.0 / KBANSRC.LZH / SRC / PROG / CMD / DLPIN.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-17  |  2.3 KB  |  90 lines

  1. /*
  2.  * the class DELETE_PIN
  3.  * Copyright (C) 1996, 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
  4.  */
  5.  
  6. #include "../stdafx.h"
  7.  
  8. #include "../common/bool.h"
  9.  
  10. #include "dlpin.h"
  11.  
  12. STAGE* DELETE_PIN::init_new(KBAN_INFO& /* info */, KBAN_DRAW& /* draw */)
  13. {
  14.   return new STAGE_SELECT;
  15. }
  16.  
  17. const char* DELETE_PIN::get_name(void)
  18. {
  19.   return "Delete:Pin";
  20. }
  21.  
  22. STAGE* DELETE_PIN::STAGE_SELECT::mouse_left_up(KBAN_INFO& info, KBAN_DRAW& /* draw */, const XY& pc, UINT /* nFlags */)
  23. {
  24.   PRIMITIVE& primitive = info.kban_data().primitive();
  25.   uint layer = info.active_layer().get_pin_layer();
  26.   PIN_LIST& pin_list = primitive.layer(layer).pin_list();
  27.  
  28.   XY ac;
  29.   info.grid().xy_pc2ac_with_snap_off(pc, ac);
  30.  
  31.   PIN_ELEMENT* target = pin_list.search(ac);
  32.  
  33.   STAGE* ret;
  34.   if(target != NULL) {
  35.     ret = new STAGE_CONFIRM(info.active_layer().get_pin_layer(), target);
  36.   } else {
  37.     ret = this;
  38.   }
  39.   return ret;
  40. }
  41.  
  42. STAGE* DELETE_PIN::STAGE_SELECT::mouse_right_up(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
  43. {
  44.   return NULL;
  45. }
  46.  
  47. DELETE_PIN::STAGE_CONFIRM::STAGE_CONFIRM(uint layer, PIN_ELEMENT* target)
  48.   : m_done(0),
  49.     m_old_pin_layer(layer),
  50.     m_target(target) {}
  51.  
  52. STAGE* DELETE_PIN::STAGE_CONFIRM::init(KBAN_INFO& info, KBAN_DRAW& draw)
  53. {
  54.   draw.draw_primitive_pin_target(*m_target);
  55.   return this;
  56. }
  57.  
  58. STAGE* DELETE_PIN::STAGE_CONFIRM::redraw(KBAN_INFO& info, KBAN_DRAW& draw)
  59. {
  60.   draw.draw_primitive_pin_target(*m_target);
  61.   return this;
  62. }
  63.  
  64. STAGE* DELETE_PIN::STAGE_CONFIRM::mouse_left_up(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
  65. {
  66.   PRIMITIVE& primitive = info.kban_data().primitive();
  67.   PIN_LIST& pin_list = primitive.layer(m_old_pin_layer).pin_list();
  68.  
  69.   draw.erase_primitive_pin(*m_target);
  70.   pin_list.delete_one(m_target);
  71.   info.SetModifiedFlag();
  72.   info.new_state().set(true);
  73.   info.new_state_str() = "Delete Pin";
  74.  
  75.   m_done.set(TRUE);
  76.   return new STAGE_SELECT;
  77. }
  78.  
  79. STAGE* DELETE_PIN::STAGE_CONFIRM::mouse_right_up(KBAN_INFO& info, KBAN_DRAW& /* draw */, const XY& /* pc */, UINT /* nFlags */)
  80. {
  81.   return new STAGE_SELECT;
  82. }
  83.  
  84. void DELETE_PIN::STAGE_CONFIRM::end(KBAN_INFO& info, KBAN_DRAW& draw)
  85. {
  86.   if(!m_done.get()) {
  87.     draw.draw_primitive_pin(*m_target, m_old_pin_layer);
  88.   }
  89. }
  90.